/*
 * @Description: Dog
 * @Author: rendc
 * @Date: 2024-09-13 10:45:45
 * @LastEditors: rendc
 * @LastEditTime: 2024-09-13 15:53:46
 */
// Dog类 继承自 Animal 类 
// 继承的关键字是 extends
// 继承只能单继承 和 多层继承
// extends后面只能写一个类
public class Dog extends Animal {
  // 继承 了 animal
  // 不可以直接操作
  // Animal private String name
  // 可以直接操作
  // Animal public int number
  // 子类也需要一个名为 number 的成员变量
  // private int number = 20;
  // 子类新增一个属性
  private String color;

  // 构造器
  public Dog() {
    // 如果不显示的声明，这里会默认调用父类的无参构造器
    // super();
    System.out.println("Dog类的无参构造器");
  }

  // 全参构造器
  public Dog(String name, int number, String color) {
    // 调用父类的两参构造器
    super(name, number);
    // 赋值color
    this.color = color;
    System.out.println("Dog类的全参构造器");
  }

  // 子类的get set
  public void setColor(String color) {
    this.color = color;
  }

  public String getColor() {
    return color;
  }

  public void showNumber() {
    System.out.println("number: " + number);
    System.out.println("this.number: " + this.number);
    System.out.println("super.number: " + super.number);
  }

  public void showNumber(int number) {
    System.out.println("number: " + number);
    System.out.println("this.number: " + this.number);
    System.out.println("super.number: " + super.number);
  }

  // sayHello
  public void sayHello() {
    // System.out.println("继承:name: " + name); // 报错
    System.out.println("继承:name: " + getName()); // 父类私有属性 可以通过非私有方法访问
    System.out.println("继承:number: " + number);
    System.out.println("自有:color: " + color);
  }
}